#include <string>
#include <vector>
#include <iostream>
#pragma once

class  MyAes {
public:
    MyAes();
    ~MyAes();
    std::string openssl_aes_encrypt(const std::string& password, const std::string& plaintext);//AES加密函数
    std::string openssl_aes_decrypt(const std::string& password, const std::string& ciphertext_b64);//AES解密函数
    void openssl_aes_encrypt_file(const std::string& input_path, const std::string& output_path,const std::string& password);//AES加密文件
    void openssl_aes_decrypt_file(const std::string& input_path, const std::string& output_path,const std::string& password);//AES解密文件
private:
    std::vector<unsigned char> base64_decode(const std::string& input);//base64加密函数
    std::string base64_encode(const std::vector<unsigned char>& data);//base64解密函数
};

//普通函数需要使用extern "C"声明，外部才可调用
#ifdef __cplusplus
extern "C" {
#endif
MyAes* createMyClass();      // 创建对象
void destroyMyClass(MyAes*); // 销毁对象

#ifdef __cplusplus
}
#endif
